如果文件不在特定位置进行转换,则会出现通知错误

时间:2016-12-10 00:14:39

标签: browserify babeljs

我将项目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的问题?

1 个答案:

答案 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