我创建了一个私有 npm 模块,当我在本地运行应用程序时它工作得非常好。当我使用npm publish
. 但是,它依赖于库 antd,如果我将其保留在依赖项中,它会说它找不到 antd@2.12.1。所以我把它移到 peerDependencies 然后它会安装。当我尝试从我成功安装的 npm 包中导入任何组件(我从最简单的测试用例开始)时,它会抛出这个错误:
Module parse failed: Unexpected token (5:2)
You may need an appropriate loader to handle this file type.
|
| const Module = ({children}) => (
| <span className=`module-title`>{children}</span>
| )
|
无论是否是使用 antd 的模块,都会出现上述加载程序问题。我的应用程序正在使用 webpack。我的 webpack 的 module: loaders 部分可以在下面找到:
module: {
loaders: [
{ test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
// include: /node_modules\/@nuralogix\/dfx-ui\/src/
},
{ test: /\.jsx?$/,
loader: 'babel-loader',
exclude: /node_modules/,
// include: /node_modules\/@nuralogix\/dfx-ui\/src/
},
{ test: /\.global\.css$/,
use: [ 'style-loader', 'css-loader' ]
},
{ test: /^((?!\.global).)*\.css$/,
use: [ 'style-loader', 'css-loader' ]
},
{ test: /\.global\.less$/,
use: [ 'style-loader', 'css-loader', 'less-loader' ]
},
{ test: /^((?!\.global).)*\.less$/,
use: [ 'style-loader', 'css-loader', 'less-loader' ]
},
include:
过去的评论很有帮助,但目前会导致错误。
我将非常感谢任何关于为什么我不能使用这个模块的建议或想法(尽管它看起来很简单)。
供参考的 Babel 文件:
{
"presets": [
["env", {
"targets": { "node": 7 },
"useBuiltIns": true
}],
"stage-0",
"react"
],
"env": {
"production": {
"presets": ["react-optimize"],
"plugins": [
"babel-plugin-dev-expression",
["import", {"libraryName": "antd", "style": true}]
]
},
"development": {
"plugins": [
"transform-class-properties",
"transform-es2015-classes",
["import", {"libraryName": "antd", "style": true} ]
]
}
}
}
注意:我非常有信心我没有正确编译到 es5。我已经添加了这两个脚本并在我的 package.json 中为它们安装了相关文件
"compile": "rimraf lib/* && babel src -d lib",
"prepare": "npm run compile"
现在,我收到此错误:
sh: 1: babel: not found
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! packageName compile: 'rimraf lib/* && babel src -d lib'
npm ERR! spawn ENOENT
我的 .babelrc 文件与上面相同,只是我添加了:
"transform-runtime",
对开发和产品。
有没有人有使用 rimraf 或其他任何东西创建将 es6 编译为 es5 的脚本的经验?
作为参考,我基于这篇文章的许多新增内容: