我们的服务器上有一个Ghost博客平台的生产版本,其中包含内容和样式更改。我将博客的app文件夹下载到我的本地计算机上。说明书似乎很简单。
快速开始:npm install -g grunt-cli
npm install
grunt init
(如果您想在生产模式下运行Ghost,则grunt prod
)npm start
但是当我运行grunt init
时,我得到以下内容:
Running "shell:bower" (shell) task
module.js:340
throw err;
^
Error: Cannot find module 'q'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/steelcollar/workspace/blog/node_modules/.bin/bower:6:9)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
Warning: Command failed:
module.js:340
throw err;
^
Error: Cannot find module 'q'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/Users/steelcollar/workspace/blog/node_modules/.bin/bower:6:9)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
Use --force to continue.
最终,正在运行npm start
会导致:
ERROR: Cannot find module '../node_modules/sqlite3/lib/binding/node-v11-darwin-x64/node_sqlite3.node'
我安装了凉亭和咕噜声。我根本没有改变代码。问题出在哪里?
更新
根据我下载的文件夹结构,路径为../node-v11-linux-x64/node_sqlite3.node'
而不是../node-v11-darwin-x64/node_sqlite3.node'
。
如果我将文件夹名称从darwin
更改为linux
,我收到此错误:
ERROR: dlopen(../node_modules/sqlite3/lib/binding/node-v11-darwin-x64/node_sqlite3.node, 1): no suitable image found. Did find:
../node_modules/sqlite3/lib/binding/node-v11-darwin-x64/node_sqlite3.node: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00
答案 0 :(得分:4)
您好我有相同的情况,这就是我解决它的方式:
在本地计算机上,只需npm uninstall sqlite3
和npm install sqlite3 --save
,它就可以正常运行。
我不确定为什么会这样。但我认为这是因为每个操作系统需要的sqlite3版本不同,只需将app目录从服务器下载到本地计算机就会导致不兼容问题,所以让npm决定安装哪个版本的sqlite3。
答案 1 :(得分:0)
我得到了同样的错误。这不起作用:
yarn remove sqlite3 && yarn add sqlite3
然后我尝试了这个,它做了:
npm uninstall sqlite3 && npm install sqlite3
答案 2 :(得分:0)
对此的正确答案是运行npm rebuild
。这将重建与当前项目相关的所有绑定,尤其是在更新之后。