Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 第二个网页赢得';t编译单个类型脚本文件_Node.js_Typescript_Webpack_Compilation_Webpack 2 - Fatal编程技术网

Node.js 第二个网页赢得';t编译单个类型脚本文件

Node.js 第二个网页赢得';t编译单个类型脚本文件,node.js,typescript,webpack,compilation,webpack-2,Node.js,Typescript,Webpack,Compilation,Webpack 2,我在一个项目中,在Angular JS上有多个SPA,都是用typescript编写的。我有以下目录结构: src/ ├── app │ ├── frontend │ │ ├── ... │ │ └── frontend.module.ts │ ├── backend │ │ ├── ... │ │ └── backend.module.ts ├── app.frontend.module.ts ├── app.backend.module.ts src

我在一个项目中,在Angular JS上有多个SPA,都是用typescript编写的。我有以下目录结构:

src/
├── app
│   ├── frontend
│   │   ├── ...
│   │   └── frontend.module.ts
│   ├── backend
│   │   ├── ...
│   │   └── backend.module.ts
├── app.frontend.module.ts
├── app.backend.module.ts
src/根目录下的文件是每个应用程序的入口点,它们包含以下代码(此处为前端):

import*从“角度”导入为角度;
从“./app/frontend/frontend.module”导入{FrontendModuleName};
angular.module('app',[FrontendModuleName]);
angular.bootstrap(文档,['app']{
史翠蒂:是的
});
因此,我应该能够告诉Webpack编译“src/app.frontend.module.ts”,然后编译器会跟踪导入,所有内容都会很好地合并

它工作得很好,但即使我明确地告诉Webpack编译一个单个文件,它们中的所有都会被编译

举个例子,让我们以这个非常基本的配置为例:

const path=require('path');
module.exports={
上下文:path.resolve(uu dirname,'src'),
条目:{
前端:'./app.frontend.module.ts',
},
输出:{
path:path.resolve(uu dirname,'dist'),
文件名:'[name].bundle.js',
},
模块:{
装载机:[
{
测试:/\.ts(x?$/,,
装载机:['ts-loader']
}
]
}
};
执行此操作将根据请求编译app.frontend.module.ts,但也会编译app.backend.module.ts

过了一段时间,我发现似乎是Typescript编译器出了问题,而不是Webpack,因此我更改了我的
.tsconfig
,试图排除根文件,如下所示:

{
  "compilerOptions": {
      ...
  },
  "exclude": [
    "node_modules",
    "dist",
    "dev",
    "reports",
    "./src/app.*.module.ts"
  ]
}
从某种意义上说,它之所以能够工作,是因为它现在忽略了app.backend.module.ts,但它仍然尝试编译src/app/backend/目录中的每个.ts文件

那就是我现在的位置。。我在中搜索过,但没有找到任何阻止编译器递归编译所有内容的选项

事实上..

…我发现了一个非常非常难看的解决方法,我一点也不满意。有
files
选项可用于指定应编译哪些文件,但我不能给它一个空数组或引发异常

因此,我在
src/
文件夹中创建了一个空的
dummy.ts
文件,它似乎按照预期工作:

{
  "compilerOptions": {
      ...
  },
  "files": ["src/dummy.ts"],
  "exclude": [
    "node_modules",
    "dist",
    "dev",
    "reports",
    "./src/app.*.module.ts"
  ]
}
但我无法想象没有更好的方法来处理这件事

任何想法都将不胜感激


感谢您的帮助。

tsc似乎不允许使用空文件数组,
tsc
不允许使用空文件数组,
ts loader
不愿意更改该行为(如中所述)。您可以改为使用,它允许使用空文件数组。从技术上讲,您应该将入口点放入
文件中,如所示。您好,感谢您的回复。事实上,它与很棒的typescript loader配合使用效果非常好,我没有尝试过。我仍然需要将“files”选项设置为空数组,因为我希望一次只能编译一个应用程序,所以我无法在tsconfig中静态列出入口点。无论如何,感谢您的帮助。
tsc
似乎不允许使用空文件数组,
ts loader
不愿意改变该行为(如中所述)。您可以改为使用,它允许使用空文件数组。从技术上讲,您应该将入口点放入
文件中,如所示。您好,感谢您的回复。事实上,它与很棒的typescript loader配合使用效果非常好,我没有尝试过。我仍然需要将“files”选项设置为空数组,因为我希望一次只能编译一个应用程序,所以我无法在tsconfig中静态列出入口点。无论如何,谢谢你的帮助。