cnpm搭建私有庫and同步庫
阿新 • • 發佈:2019-02-18
環境: linux node mysql npm cnpm docker
1. 去git倉庫下clone cnpm.org.js程式碼
git clone https://github.com/cnpm/cnpmjs.org.git
2.安裝專案依賴
cd cnpmjs.org
npm install
安裝sqlite會出現問題,可以在package.json刪掉它
3.由於在linux安裝mysql太麻煩,本人直接在docker上執行mysql
docker run -p 3306:3306 --name cnpm-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
4.執行mysql 搭建資料庫
5.匯入資料表 把cnpmjs.org/docs/db.sql檔案拷貝到映象空間 然後再用source同步到資料庫
docker cp 地址/db.sql container:/
mysql> source db.sql
6.修改cnpmjs的配置檔案vi config/index.js
(1)註釋掉 bindingHost: '127.0.0.1',
(2)enableCompress: true, 設為true
(3) 修改資料庫配置
database: { db: 'cnpmjs', //改為自己建的資料庫名 username: 'root', // 改為自己的資料庫使用者名稱 password: '123456', //改為自己設定的資料庫密碼 // the sql dialect of the database // - currently supported: 'mysql', 'sqlite', 'postgres', 'mariadb' dialect: 'mysql', //改為mysql // custom host; default: 127.0.0.1 host: '127.0.0.1', // custom port; default: 3306 port: 3306, //改為自己設的埠 // use pooling in order to reduce db connection overload and to increase speed // currently only for mysql and postgresql (since v1.5.0) pool: { maxConnections: 10, minConnections: 0, maxIdleTime: 30000 }, // the storage engine for 'sqlite' // default store into ~/.cnpmjs.org/data.sqlite storage: path.join(dataDir, 'data.sqlite'), logging: !!process.env.SQL_DEBUG, },
7.npm start 然後在瀏覽器訪問 自己的cnpm的ip:7001 自己的cnpm的ip:7001 如果可以訪問則說明訪問成功
遇到的問題:
1.第一次安裝時docker起的mysql:latest,npm start成功但是 7001,7002頁面不能訪問,後來指定mysql的版本號為 5.7就可以了。
2.cnpm搭建成功,但是同步包,出了問題,報錯
sync error: TypeError: Cannot read property 'findAll' of null
解決辦法: 是把配置檔案 的enableAbbreviatedMetadata: true, 設為true