gpt4 book ai didi

javascript - 无法将 react 模块加载为节点模块

转载 作者:数据小太阳 更新时间:2023-10-29 04:49:03 25 4
gpt4 key购买 nike

我在路径中有一个 react 组件源/组件/测试

import React from 'react';
import ReactDom from 'react-dom';

class TestComp extends React.Component {}
export default TestComp;

我正在从路径中公开 index.js 中的组件src/index.js

import TestComp from './components/test';
export {
TestComp
};

我在 package.json 中添加了 main 作为 "main": "src/index.js"

我已经发布了上述应用程序的 npm 包 test-comp 并在另一个应用程序中使用它。main.js

import {TestComp} from 'test-comp';

我在此应用程序中使用 grunt-browserify 并设置了以下选项。

options: {
"transform": [
[
"babelify",
{
"presets": [
"es2015",
"react",
"stage-0"
]
}
]
],
browserifyOptions: {
debug: true,
extensions: ['.js', '.jsx'],
entries: ['main.js']
}
}

当我运行 grunt browserify 时出现以下错误。

>> import TestComp from './components/test';
>> ^
>> ParseError: 'import' and 'export' may appear only with 'sourceType: module'
Warning: Error running grunt-browserify. Use --force to continue.

它可能不理解节点模块中提到的路径或拒绝理解相同的 linting。我什至尝试在 .eslintrc 中添加以下内容,但没有成功

{
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module"
},
"env": {
"browser": true,
"es6": true
},
"ecmaFeatures": {
"modules": true
}
}

我尝试了与此错误相关的大部分 SO 答案。但仍然卡在同一个地方。

编辑我能够使用几乎相似的配置直接浏览第一个模块。如上所述,当第一个模块作为节点依赖项加载到其他应用程序中时出现此错误。

最佳答案

所以你在 ES6 中编写了模块 test-comp,使用 importexport,以及 main test-comp中的package.json入口是指src/index.js

答案是 browserify 转换并不适用于您需要的每个模块。它们仅适用于直接项目:不适用于项目的依赖项。

如果你想在 browserify 中需要一个使用 ES6 语法的模块,你要么需要

  1. Add a prepublish script to test-comp that transpiles it to ES5, and change the main entry of test-comp to refer to that ES5 version, not the ES6 version
  2. babelify 添加为test-comp 的依赖项,并将babelify 添加为package's 'browserify' entry 中的browserify 转换。 ,如 babelify 中所述。

关于javascript - 无法将 react 模块加载为节点模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42524589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com