我正在尝试创建迁移,它引发以下错误
yarn run v1.6.0
(node:14212) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usabil
ity issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods in
stead.
$ babel-node node_modules/.bin/knex migrate:make create_linky_table
C:\Users\Sagar\Desktop\linky\api\node_modules\.bin\knex:2
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
^^^^^^^
SyntaxError: missing ) after argument list
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:656:28)
at Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Object.newLoader [as .js] (C:\Users\Sagar\Desktop\linky\lms-linky\api\node_modules\pi
rates\lib\index.js:88:7)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
我在package.json中的脚本中设置了以下内容
"knex": "babel-node --require ./node_modules/dotenv/config node_modules/.bin/knex --knexfile='src/knexfile.js'",
我正在使用以下代码创建迁移
yarn knex make:migration create_linky_table
我当前正在使用Windows,并且遇到this answer。可能是Windows问题吗?
答案 0 :(得分:2)
@MikaelLepistö说的是正确的。
在Windows上执行迁移脚本时,我遇到了类似的问题。
我以前的命令是:
babel-node node_modules/.bin/knex --knexfile src/database/knexfile.js migrate:latest
我将其更改为:
babel-node node_modules/knex/bin/cli.js --knexfile src/database/knexfile.js migrate:latest
错误消失了。可能会将引用从.bin/knex
更改为/knex/bin/cli.js
,这将为您带来魔力,因此请尝试一下
答案 1 :(得分:0)
Windows中的C:\Users\Sagar\Desktop\linky\api\node_modules\.bin\knex
脚本之类的声音不是JavaScript可执行文件,实际上是Windows中的Shell脚本包装器。因此,当您尝试使用babel-node
或node
来执行它时,节点解释器会失败,因为您试图使用它运行bash/sh
shell脚本。
检查一下C:\Users\Sagar\Desktop\linky\api\node_modules\.bin\knex
脚本中存储的内容,以及是否有使用node
解释器的方法来覆盖,您可以使用babel-node
来覆盖它。如果没有办法覆盖它,则只需检查它是否调用了node_modules/knex/bin/cli.js
并直接用babel-node
对其进行调用。
我会亲自检查一下,但是此台式机上没有Windows节点工具设置。