【发布时间】:2019-09-18 03:45:39
【问题描述】:
我已经使用 nvm 设置了特定的节点版本,
nvm install 9.11.1
我已经构建并安装了一个 nodejs 程序:
npm install -g osmlint
这是新生成的可执行文件的完整路径:
which osmlint
/root/.nvm/versions/node/v9.11.1/bin/osmlint
我使用以下命令运行它:
/root/.nvm/versions/node/v9.11.1/bin/osmlint crossingbuildings --bbox="[72.9,18.8,73,18.9]" --zoom=12 india.mbtiles > test.txt
而且效果很好。
我已将相同的内容放入 bash shell 脚本中。 (比如说,run1.sh)。但是当我运行 shell 脚本时,它会出错。
internal/modules/cjs/loader.js:775
throw err;
^
Error: Cannot find module '/root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/node_modules/@mapbox/tile-reduce/node_modules/sqlite3/lib/binding/node-v72-linux-x64/node_sqlite3.node'
Require stack:
- /root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/node_modules/@mapbox/tile-reduce/node_modules/sqlite3/lib/sqlite3.js
- /root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/node_modules/@mapbox/tile-reduce/node_modules/@mapbox/mbtiles/lib/mbtiles.js
- /root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/node_modules/@mapbox/tile-reduce/src/index.js
- /root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/validators/crossingBuildings/index.js
- /root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/cli.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
at Function.Module._load (internal/modules/cjs/loader.js:677:27)
at Module.require (internal/modules/cjs/loader.js:830:19)
at require (internal/modules/cjs/helpers.js:68:18)
at Object.<anonymous> (/root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/node_modules/@mapbox/tile-reduce/node_modules/sqlite3/lib/sqlite3.js:4:15)
at Module._compile (internal/modules/cjs/loader.js:936:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
at Module.load (internal/modules/cjs/loader.js:790:32)
at Function.Module._load (internal/modules/cjs/loader.js:703:12)
at Module.require (internal/modules/cjs/loader.js:830:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/node_modules/@mapbox/tile-reduce/node_modules/sqlite3/lib/sqlite3.js',
'/root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/node_modules/@mapbox/tile-reduce/node_modules/@mapbox/mbtiles/lib/mbtiles.js',
'/root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/node_modules/@mapbox/tile-reduce/src/index.js',
'/root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/validators/crossingBuildings/index.js',
'/root/.nvm/versions/node/v9.11.1/lib/node_modules/osmlint/cli.js'
]
}
显然,相同的节点环境在 shell 脚本的 bash 环境中不起作用。我们如何做到这一点?
【问题讨论】: