我将项目https://github.com/videojs/video.js中的js文件复制到项目的子文件夹中。
我设置了很多依赖项,并在命令行上调用browserify
:
node ./node_modules/browserify/bin/cmd.js dev\videojs\js\video.js -t [ babelify ]
输出如下:
Error: D:/Webs/videojs/dev/videojs/js/video.js: Cannot find module '../../package.json' from 'D:\Webs\videojs\dev\videojs\js'
at Function.module.exports [as sync] (D:\Webs\videojs\node_modules\resolve\lib\sync.js:33:11)
at PluginPass.MemberExpression (D:\Webs\videojs\node_modules\babel-plugin-inline-json\lib\index.js:27:45)
at newFn (D:\Webs\videojs\node_modules\babel-traverse\lib\visitors.js:276:21)
at NodePath._call (D:\Webs\videojs\node_modules\babel-traverse\lib\path\context.js:76:18)
at NodePath.call (D:\Webs\videojs\node_modules\babel-traverse\lib\path\context.js:48:17)
at NodePath.visit (D:\Webs\videojs\node_modules\babel-traverse\lib\path\context.js:105:12)
at TraversalContext.visitQueue (D:\Webs\videojs\node_modules\babel-traverse\lib\context.js:150:16)
at TraversalContext.visitSingle (D:\Webs\videojs\node_modules\babel-traverse\lib\context.js:108:19)
at TraversalContext.visit (D:\Webs\videojs\node_modules\babel-traverse\lib\context.js:192:19)
at Function.traverse.node (D:\Webs\videojs\node_modules\babel-traverse\lib\index.js:114:17)
当我将文件移动到一个文件夹时,该命令会运行并转换所有文件。
我现在想知道这个错误来自哪里。 babel-traverse
似乎在插件中循环,并最终发现它不是在项目根目录下运行3个级别。这是预期的行为吗?这是babel,browserify,插件还是videojs的问题?
答案 0 :(得分:1)
请改用此命令:
./node_modules/.bin/browserify dev\videojs\js\video.js -t [ babelify ]
安装Browserify后,命令行脚本会添加到node_modules/.bin
,这是标准做法。这是你应该运行的那些命令;不是Browserify自己的bin
目录中的脚本。
请注意,脚本是shell脚本或Windows CMD脚本,并且它们不是使用node
运行的。
或者,如果您将以下内容添加到package.json
,则可以使用NPM(也是标准做法)运行Browserify:
{
...
"scripts": {
"browserify": "browserify"
}
}
然后命令为:
npm run browserify dev\videojs\js\video.js -t [ babelify ]
或者,如果您想将参数保留在"scripts"
配置中:
{
...
"scripts": {
"bundle": "browserify dev/videojs/js/video.js -t [ babelify ]"
}
}
和
npm run bundle